/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidad;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import java.util.Arrays;

/**
 *
 * @author a
 */
@Entity
@Table(name = "bebidas")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Bebidas.findAll", query = "SELECT b FROM Bebidas b"),
    @NamedQuery(name = "Bebidas.findByIdbebidas", query = "SELECT b FROM Bebidas b WHERE b.idbebidas = :idbebidas"),
    @NamedQuery(name = "Bebidas.findByNombre", query = "SELECT b FROM Bebidas b WHERE b.nombre LIKE :nombre"),
    @NamedQuery(name = "Bebidas.findByPrecio", query = "SELECT b FROM Bebidas b WHERE b.precio = :precio"),
    @NamedQuery(name = "Bebidas.findByPrecioCosto", query = "SELECT b FROM Bebidas b WHERE b.precioCosto = :precioCosto"),
    @NamedQuery(name = "Bebidas.findByDescripcion", query = "SELECT b FROM Bebidas b WHERE b.descripcion LIKE :descripcion"),
    @NamedQuery(name = "Bebidas.findByDireccionImange", query = "SELECT b FROM Bebidas b WHERE b.direccionImange = :direccionImange"),
    @NamedQuery(name = "Bebidas.findByActivo", query = "SELECT b FROM Bebidas b WHERE b.activo = :activo")})
public class Bebidas implements Serializable, Comparable<Bebidas> {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idbebidas")
    private Integer idbebidas;
    @Basic(optional = false)
    @Column(name = "nombre")
    private String nombre;
    @Basic(optional = false)
    @Column(name = "precio")
    private float precio;
    @Basic(optional = false)
    @Column(name = "precioCosto")
    private float precioCosto;
    @Column(name = "descripcion")
    private String descripcion;
    @Column(name = "direccionImange")
    private String direccionImange;
    @Column(name = "activo")
    private Boolean activo;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "bebidas")
    private Collection<BebidasHasProducto> bebidasHasProductoCollection;
    @JoinColumn(name = "clasificacion_idClasificacion", referencedColumnName = "idClasificacion")
    @ManyToOne(optional = false)
    private Clasificacion clasificacionidClasificacion;
    @OneToMany(mappedBy = "bebidasIdbebidas")
    private Collection<Detalleorden> detalleordenCollection;

    public Bebidas() {
    }

    public Bebidas(Integer idbebidas) {
        this.idbebidas = idbebidas;
    }

    public Bebidas(Integer idbebidas, String nombre, float precio, float precioCosto) {
        this.idbebidas = idbebidas;
        this.nombre = nombre;
        this.precio = precio;
        this.precioCosto = precioCosto;
    }

    public Integer getIdbebidas() {
        return idbebidas;
    }

    public void setIdbebidas(Integer idbebidas) {
        Integer oldIdbebidas = this.idbebidas;
        this.idbebidas = idbebidas;
        changeSupport.firePropertyChange("idbebidas", oldIdbebidas, idbebidas);
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        String oldNombre = this.nombre;
        this.nombre = nombre;
        changeSupport.firePropertyChange("nombre", oldNombre, nombre);
    }

    public float getPrecio() {
        return precio;
    }

    public void setPrecio(float precio) {
        float oldPrecio = this.precio;
        this.precio = precio;
        changeSupport.firePropertyChange("precio", oldPrecio, precio);
    }

    public float getPrecioCosto() {
        return precioCosto;
    }

    public void setPrecioCosto(float precioCosto) {
        float oldPrecioCosto = this.precioCosto;
        this.precioCosto = precioCosto;
        changeSupport.firePropertyChange("precioCosto", oldPrecioCosto, precioCosto);
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        String oldDescripcion = this.descripcion;
        this.descripcion = descripcion;
        changeSupport.firePropertyChange("descripcion", oldDescripcion, descripcion);
    }

    public String getDireccionImange() {
        return direccionImange;
    }

    public void setDireccionImange(String direccionImange) {
        String oldDireccionImange = this.direccionImange;
        this.direccionImange = direccionImange;
        changeSupport.firePropertyChange("direccionImange", oldDireccionImange, direccionImange);
    }

    public Boolean getActivo() {
        return activo;
    }

    public void setActivo(Boolean activo) {
        Boolean oldActivo = this.activo;
        this.activo = activo;
        changeSupport.firePropertyChange("activo", oldActivo, activo);
    }

    @XmlTransient
    public Collection<BebidasHasProducto> getBebidasHasProductoCollection() {
        return bebidasHasProductoCollection;
    }

    public void setBebidasHasProductoCollection(Collection<BebidasHasProducto> bebidasHasProductoCollection) {
        this.bebidasHasProductoCollection = bebidasHasProductoCollection;
    }

    public Clasificacion getClasificacionidClasificacion() {
        return clasificacionidClasificacion;
    }

    public void setClasificacionidClasificacion(Clasificacion clasificacionidClasificacion) {
        Clasificacion oldClasificacionidClasificacion = this.clasificacionidClasificacion;
        this.clasificacionidClasificacion = clasificacionidClasificacion;
        changeSupport.firePropertyChange("clasificacionidClasificacion", oldClasificacionidClasificacion, clasificacionidClasificacion);
    }

    @XmlTransient
    public Collection<Detalleorden> getDetalleordenCollection() {
        return detalleordenCollection;
    }

    public void setDetalleordenCollection(Collection<Detalleorden> detalleordenCollection) {
        this.detalleordenCollection = detalleordenCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idbebidas != null ? idbebidas.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Bebidas)) {
            return false;
        }
        Bebidas other = (Bebidas) object;
        if ((this.idbebidas == null && other.idbebidas != null) || (this.idbebidas != null && !this.idbebidas.equals(other.idbebidas))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidad.Bebidas[ idbebidas=" + idbebidas + " ]";
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }

    @Override
    public int compareTo(Bebidas o) {
        if(nombre.compareTo(o.nombre) < 0)
            return -1;
        if(nombre.compareTo(o.nombre) > 0)
            return 1;
        return 0;        
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
}
